/* global  expect, apiTest */

require('../../apiTest')
const Log = {}

// 列表单条验证
Log.checkOne = function(v, post) {
  expect(v).to.be.an('object')
  apiTest.isObjectId(v._id)
  ;['optime', 'optype', 'type'].forEach((key) => {
    expect(v[key]).to.be.a('string', '属性: "' + key + '" 类型错误!')
  })
  expect(v.hs).to.be.a('number')
  if (v.type === 'admin') {
    ['opname', 'ip'].forEach((key) => {
      expect(v[key]).to.be.a('string', '属性: "' + key + '" 类型错误!')
    })
    // 可选项判断
    ;['opuser'].forEach((key) => {
      if (v[key]) expect(v[key]).to.be.a('string', '属性: "' + key + '" 类型错误!')
    })
  } else if (v.type === 'login') {
    ['agent', 'mark', 'appid'].forEach((key) => {
      expect(v[key]).to.be.a('string', '属性: "' + key + '" 类型错误!')
    })
  } else if (v.type === 'push') {
    ['appid', 'appname'].forEach((key) => {
      expect(v[key]).to.be.a('string', '属性: "' + key + '" 类型错误!')
    })
    expect(v.code).to.be.a('number', '属性: code 类型错误!')
  } else if (v.type === 'api') {
    ['ip', 'appid', 'appname'].forEach((key) => {
      expect(v[key]).to.be.a('string', '属性: "' + key + '" 类型错误!')
    })
    expect(v.code).to.be.a('number')
  }
  // 可选项判断
  ['mark'].forEach((key) => {
    // if (v[key]) expect(v[key]).to.equal(v[key], '属性: "' + key + '" 类型错误!')
  })
}

// 列表通用验证
Log.checkList = function(get, cb) {
  return apiTest.get('/log/find', Object.assign({}, get))
    .then(function(res) {
      var data = apiTest.apiOk(res)
      expect(data).to.be.a('object')
      // 验证分页
      apiTest.checkPaging(data, get)
      data.list.forEach(function(v) {
        Log.checkOne(v)
        if (cb) cb(v)
      })
    })
}


module.exports = Log
